/*
*功能：实现系数矩阵
*未完成：矩阵的乘法和加法
*/
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct{
	int	i,j;
	ElemType e;
}Triple;
typedef struct{
	Triple	data[MAXSIZE];
//	int	rpos[100];
	int mu,nu,tu;
}Matrix;
void CreateMatrix(Matrix* m)
{
	m=(Matrix*)malloc(sizeof(Matrix));
	(*m).mu=0;
        (*m).nu=0;
	(*m).tu=0;
	printf("矩阵已经创建！！！\n");
}
void DestroyMatrix(Matrix* m)
{
	if((*m).tu==0)
	{printf("矩阵已经为空！！！\n");}
        else
	{
	free(m);
	printf("矩阵已经清空！！！\n");
        }       
}
void MakeMatrix(Matrix* m)
{
	Matrix* o;
	o=(Matrix*)malloc(sizeof(Matrix));
	printf("请输入行值与列值：");
	scanf("%d %d",&((*m).mu),&((*m).nu));
	printf("\n请输入非零元的个数：");
	scanf("%d",&((*m).tu));
	int i;
	Triple* t;
	for(i=0;i<(*m).tu;i++)
	{
	t=(Triple*)malloc(sizeof(Triple));
	printf("\n请对应输入：行 列 值\n");
	scanf("%d %d %d",&((*t).i),&((*t).j),&((*t).e));
	(*o).data[i]=*t;
	}
	int col,p,row;
	int temp=0;
	for(col=0;col<(*m).mu;col++)
	{
	for(row=0;row<(*m).nu;row++)
	{
	   for(p=0;p<(*m).tu;p++)
	   {
	      if((*o).data[p].i==col&&(*o).data[p].j==row) {(*m).data[temp]=(*o).data[p];temp++;}
	   }
	}
	}
	free(o);
	printf("输入数值成功！！！\n");
}
void TranSMatrix(Matrix m,Matrix* t)//稀疏矩阵转置
{
	(*t).mu=m.mu;
	(*t).nu=m.nu;
	(*t).tu=m.tu;
	if((*t).tu)
	{
	   int q=0;
	   int col,p;
	   for(col=0;col<m.nu;col++)
	   {
              for(p=0;p<m.tu;p++)
		{
		if(m.data[p].j==col)
		{
		   (*t).data[q].i=m.data[p].j;
		   (*t).data[q].j=m.data[p].i;
		   (*t).data[q].e=m.data[p].e;
		   q++;
		}
		}
	   }
	}
}
void CopyMatrix(Matrix m,Matrix* t)
{
	(*t)=m;
}
/*void MulMatrix(Matrix m,Matrix n,Matrix* t)
{
	if(m.mu!=n.mu) printf("不符合乘法的要求！！！");
	(*t).mu=m.mu;(*t).nu=n.nu;(*t).tu=0;
	int arow;
	if(m.tu*n.tu!=0)
	{
	   for(arow=0;arow<m.mu;arow++)
		{
		int ctemp[]=0;
		(*t).rpos[arow]=(*t).tu+1;
		if(arow<m.mu) 
		}
	}
}*/
void PrintMatrix(Matrix* m)
{
	int i,j,p;
	int temp=0;
	for(i=0;i<(*m).mu;i++)
	{
	   for(j=0;j<(*m).nu;j++)
	   {
	      for(p=0;p<(*m).tu;p++)
	      {
		 if((*m).data[p].i==i&&(*m).data[p].j==j)
		 {printf("%d ",(*m).data[p].e);temp=1;}	
	      }
	      if(temp==0)
	      {
		 printf("0 ");
	      }
	      else
		{
		temp=0;
		}
	   }
	   printf("\n");
	}
}
int main(void)
{
	Matrix m,t;
	CreateMatrix(&m);
	CreateMatrix(&t);
	MakeMatrix(&m);
	CopyMatrix(m,&t);
	PrintMatrix(&t);
}







